const fs = require('fs');
const path = require('path');

// 添加或更新 modelVersion 的通用方法
function addOrUpdateModelVersion(content, newVersion = '5.0.4') {
    const modelVersionRegex = /"modelVersion"\s*:\s*"[^"]*"/;

    if (modelVersionRegex.test(content)) {
        // 如果存在 modelVersion，则替换为新版本
        return content.replace(modelVersionRegex, `"modelVersion": "${newVersion}"`);
    } else {
        // 如果不存在 modelVersion，则在第一个 { 后插入
        return content.replace(/\{/, `{\n    "modelVersion": "${newVersion}",`);
    }
}

// 定义修改工程配置的方法
function modifyProjectConfig() {
    try {
        // 1. 修改工程级 build-profile.json5
        const buildProfilePath = path.join(__dirname, 'build-profile.json5');
        let buildProfileContent = fs.readFileSync(buildProfilePath, 'utf-8');

        // 删除 app.products 下的 compileSdkVersion 和 targetSdkVersion 配置
        buildProfileContent = buildProfileContent.replace(
            /compileSdkVersion:\s*\d+,?\s*/g, '' // 删除 compileSdkVersion
        ).replace(
            /targetSdkVersion:\s*\d+,?\s*/g, '' // 删除 targetSdkVersion
        );

        // 删除多余的空行
        buildProfileContent = buildProfileContent.replace(/^\s*\n/gm, '');

        // 写回 build-profile.json5 文件
        fs.writeFileSync(buildProfilePath, buildProfileContent, 'utf-8');

        // 2. 进入 hvigor 目录并删除 hvigor-wrapper.js
        const hvigorDir = path.join(__dirname, 'hvigor');
        if (fs.existsSync(hvigorDir)) {
            const hvigorWrapperPath = path.join(hvigorDir, 'hvigor-wrapper.js');
            if (fs.existsSync(hvigorWrapperPath)) {
                fs.unlinkSync(hvigorWrapperPath);
            }

            // 修改 hvigor-config.json5
            const hvigorConfigPath = path.join(hvigorDir, 'hvigor-config.json5');
            let hvigorConfigContent = fs.readFileSync(hvigorConfigPath, 'utf-8');

            // 删除 hvigorVersion 字段
            // 这里还需要修改，因为会有问题
            hvigorConfigContent = hvigorConfigContent
                .replace(/"hvigorVersion":\s*"[^"]*",?\s*/, '')
                .replace(/"@ohos\/hvigor-ohos-plugin":\s*"[^"]*",?\s*/, '');



            // 添加或更新 modelVersion
            hvigorConfigContent = addOrUpdateModelVersion(hvigorConfigContent, "5.0.4");

            console.log(hvigorConfigContent);

            // 写回 hvigor-config.json5 文件
            fs.writeFileSync(hvigorConfigPath, hvigorConfigContent, 'utf-8');
        }

        // 3. 修改工程级 oh-package.json5
        const ohPackagePath = path.join(__dirname, 'oh-package.json5');
        let ohPackageContent = fs.readFileSync(ohPackagePath, 'utf-8');

        // 添加或更新 modelVersion
        const updatedContent = addOrUpdateModelVersion(ohPackageContent, "5.0.4");

        // 写回 oh-package.json5 文件
        fs.writeFileSync(ohPackagePath, updatedContent, 'utf-8');

        console.log("Project configuration modified successfully.")

    } catch (error) {
        console.error("Error occurred when modifying project configuration:", error);
    }
}

// 调用函数
modifyProjectConfig();